package com.fish.service;

/**
 * Token服务接口
 */
public interface TokenService {
    
    /**
     * 保存Refresh Token
     *
     * @param userId 用户ID
     * @param refreshToken Refresh Token
     */
    void saveRefreshToken(Long userId, String refreshToken);
    
    /**
     * 验证Refresh Token是否有效
     *
     * @param refreshToken Refresh Token
     * @return true-有效 false-无效
     */
    boolean validateRefreshToken(String refreshToken);
    
    /**
     * 删除用户的Refresh Token
     *
     * @param userId 用户ID
     */
    void deleteRefreshToken(Long userId);
    
    /**
     * 将Token加入黑名单
     *
     * @param token Token
     * @param userId 用户ID
     * @param reason 原因
     */
    void addToBlacklist(String token, Long userId, String reason);
    
    /**
     * 检查Token是否在黑名单中
     *
     * @param token Token
     * @return true-在黑名单 false-不在黑名单
     */
    boolean isInBlacklist(String token);
    
    /**
     * 清理过期的Token和黑名单记录
     */
    void cleanExpiredTokens();
}